package com.qianfeng.springmvc.controller;


//
//                            _ooOoo_  
//                           o8888888o  
//                           88" . "88  
//                           (| -_- |)  
//                            O\ = /O  
//                        ____/`---'\____  
//                      .   ' \\| |// `.  
//                       / \\||| : |||// \  
//                     / _||||| -:- |||||- \  
//                       | | \\\ - /// | |  
//                     | \_| ''\---/'' | |  
//                      \ .-\__ `-` ___/-. /  
//                   ___`. .' /--.--\ `. . __  
//                ."" '< `.___\_<|>_/___.' >'"".  
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                 \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖镇楼            BUG辟易  
//          佛曰:  
//                  写字楼里写字间，写字间里程序员；  
//                  程序人员写程序，又拿程序换酒钱。  
//                  酒醒只在网上坐，酒醉还来网下眠；  
//                  酒醉酒醒日复日，网上网下年复年。  
//                  但愿老死电脑间，不愿鞠躬老板前；  
//                  奔驰宝马贵者趣，公交自行程序员。  
//                  别人笑我忒疯癫，我笑自己命太贱；  


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Created by jackiechan on 2021/9/29 09:42
 *
 * @author jackiechan
 * @version 1.0
 * @since 1.0
 */
@Controller
@RequestMapping("/stu")
@SessionAttributes({"username","address"})//这个注解的作用是如果我们的方法通过 model 保存了数据,并且名字是 username 或者 address,则保存到 session 中 ,而不是默认的 request
public class StudentController {

    @RequestMapping("/add")
    public String addStu(String stuName, HttpServletRequest request) {
        System.err.println("addStu 执行了");
        request.setAttribute("ceshi", "这是从请求中携带过来的数据"+stuName);
        return "/addStu.jsp";//转到到了某个路径
    }
    @RequestMapping("/addredirect")
    public String addredirect(String stuName, HttpServletRequest request) {
        System.err.println("addStu 执行了");
        request.setAttribute("ceshi", "这是从重定向中携带过来的数据" + stuName);
        return "redirect:/addStu.jsp";//重定向无法获取请求中的数据
        //request.getredispath(/dasdasdasdas).forward(req,res)
    }

    //向 session 中保存数据
    @RequestMapping("/addsession")
    public String addsession(String stuName, HttpSession session) {
        System.err.println("addStu 执行了");
        session.setAttribute("ceshi","这是从 seesion 中传递的数据"+stuName);
        return "redirect:/addStu.jsp";//重定向无法获取请求中的数据
        //response.sendredirect(/dasdas)
    }

    @RequestMapping("/model")
    public String addModel(Model model) {
        model.addAttribute("quyibeitianshangdeshui","吹啊吹我的骄傲放纵" );//默认会向请求中存放这个数据
        return "/model.jsp";
    }

    @RequestMapping("/modelredirect")
    public String addModelRedirect(Model model) {
        model.addAttribute("quyibeitianshangdeshui","吹啊吹我的骄傲放纵" );//默认会向请求中存放这个数据
        return "redirect:/model.jsp"; //如果是重定向,实际上放到 model 中的数据会被当做请求的参数拼接在地址后面
    }
    //TODO 经过测试,我们发现 modelandview 实际上是对我们前面内容的封装,我们原先返回结果是通过 string 类型来 return 地址的
    //TODO 现在我们只需要将返回的地址保存到 modelandview 中,springmvc 会自动帮我们解析
    @RequestMapping("/update")
    public ModelAndView update() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("zheshisha", "我甜蜜的也不知道啊");//相当于 model,默认向 request 存放数据
        modelAndView.setViewName("/modelview.jsp");//转发到某个地址
        return modelAndView;
    }



    @RequestMapping("/updateredirect")
    public ModelAndView updateredirect() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("zheshisha", "我甜蜜的也不知道啊");//相当于 model,默认向 request 存放数据
        modelAndView.setViewName("redirect:/modelview.jsp");//重定向到某个结果
        return modelAndView;
    }


    @RequestMapping("/sessionattr")
    public String delete(Model model) {
        model.addAttribute("username", "迪迦奥特曼");//这个参数因为类上面配置了SessionAttributes设置了这名字,所以会被保存到 session 中
        model.addAttribute("address", "各大平台");
        model.addAttribute("aaaa", "一群垃圾建立了一个反Steam联盟");
        return "redirect:/sessionattr.jsp";
    }
}
